SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[BajasSuplentesSinContinuidadSuperposicion]

@CuiseDesde INT,
@CuiseHasta INT,
@FechaBajaMasiva varchar(10)

AS


---------------------------------------------------------------------------------------------------------------------------------------------------------------
--- PERDON SE DEBERIA LLAMAR parBajasSuplentesSinContinuidadSuperposicion - fue el primero
--- Este pa se utiliza para el Reporte BajasSuplentesSinContinuidadSuperposiciones.rpt ---------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------

SET NOCOUNT ON
SET DATEFORMAT DMY

DECLARE @PlazasaAnalizar TABLE (IdServicio INT, IdPlaza INT, Agente INT, FechaAlta DATETIME, FechaBaja DATETIME, Documento INT, ApellidoNombre VARCHAR(100) )

DECLARE @ServiciosNormales TABLE (cupof VARCHAR(100), IdServicioBaja INT, DocumentoBaja INT, AgenteBaja VARCHAR(100), AltaSuplente VARCHAR(10), BajaSuplente VARCHAR(10) , IdServicio INT, IdSubServicio INT, Documento INT, AgenteActivo VARCHAR(100), SituacionRevista VARCHAR(30),  AltaActivo VARCHAR(10), BajaActivo VARCHAR(10), Dias INT, FechaOrden DATETIME)


INSERT INTO @PlazasaAnalizar
SELECT DISTINCT SA.idServicioAgente,  SSA.Plaza, SA.Agente, SA.FechaAlta, SA.FechaBaja, A.Documento, A.Nombres     
   FROM Tb_ServiciosAgentes SA
    INNER JOIN tb_SubserviciosAgentes SSA ON SSA.ServicioAgente = SA.idServicioAgente 
	INNER JOIN Tb_Organizaciones Org ON Org.idOrganizaciones = SA.UbicacionOrig 
	INNER JOIN tb_Agentes A ON a.idAgente = sa.Agente 
 	INNER JOIN tb_Plazas P ON p.idPlaza = SSA.Plaza 
	INNER JOIN tb_Afiliaciones AF ON AF.idAgente = A.idAgente 
	INNER JOIN tb_Normas N ON N.idNorma = SA.NormaBaja 
	WHERE Org.CUISE BETWEEN @CuiseDesde AND @CuiseHasta
		AND SA.FechaBaja =  @FechaBajaMasiva
		AND SA.SituacionRevista = 4 
		AND SA.CausaBaja = 11


DECLARE @IdServicio INT 
DECLARE @IdPlaza INT
DECLARE @Agente INT 
DECLARE @FechaAlta DATETIME
DECLARE @FechaBaja DATETIME 
DECLARE @Documento INT 
DECLARE @ApellidoNombre VARCHAR(100)

DECLARE Registros CURSOR FOR 
SELECT * FROM @PlazasAAnalizar

		
OPEN Registros

FETCH NEXT FROM Registros INTO @IdServicio, @IdPlaza, @Agente, @FechaAlta, @FechaBaja, @Documento, @ApellidoNombre 

WHILE @@FETCH_STATUS = 0
BEGIN

   INSERT INTO @ServiciosNormales
		SELECT  P.CUPOF, @IdServicio, @Documento, @ApellidoNombre, CONVERT(VARCHAR(10),@FechaAlta,103), CONVERT(VARCHAR(10),@FechaBaja,103), SSA.ServicioAgente ,  SSA.idSubServicio  , A.Documento, A.Nombres, SR.Descripcion, CONVERT(VARCHAR(10),SSA.FechaAlta,103), CONVERT(VARCHAR(10),SSA.FechaBaja,103),  CASE WHEN SSA.FechaBaja IS NULL THEN datediff(DAY, SSA.FechaAlta, @FechaBaja ) ELSE datediff(DAY, SSA.FechaAlta, SSA.FechaBaja ) END, SSA.FechaAlta  
			FROM tb_SubserviciosAgentes SSA  
			INNER JOIN tb_ServiciosAgentes SA ON SA.idServicioAgente = SSA.ServicioAgente 
			INNER JOIN tb_Agentes A ON A.idAgente = SA.Agente 
			INNER JOIN tb_Plazas p ON p.idPlaza = ssa.Plaza 
			INNER JOIN Tb_SituacionRevista SR ON SR.IdSituacionRevista = SA.SituacionRevista
			WHERE SSA.Plaza = @IdPlaza 
				AND SA.Agente <> @Agente
				AND SA.SituacionRevista IN ( 1, 2, 3)
			    AND SSA.SituacionLaboral  = 5
				AND (
					(SSA.FechaBaja IS NOT NULL AND SSA.FechaAlta >= @FechaAlta AND SSA.FechaBaja <= @FechaBaja)
					OR 
					(SSA.FechaBaja IS NULL AND  @FechaBaja >= SSA.FechaAlta)
					)
  
   FETCH NEXT FROM Registros INTO @IdServicio, @IdPlaza, @Agente, @FechaAlta, @FechaBaja, @Documento, @ApellidoNombre 
   
END

DEALLOCATE Registros


SELECT * FROM @ServiciosNormales ORDER BY Cupof, DocumentoBaja, FechaOrden
GO
GRANT EXECUTE ON  [dbo].[BajasSuplentesSinContinuidadSuperposicion] TO [Informatica]
GRANT EXECUTE ON  [dbo].[BajasSuplentesSinContinuidadSuperposicion] TO [PersonalDocente]
GRANT EXECUTE ON  [dbo].[BajasSuplentesSinContinuidadSuperposicion] TO [PersonalDocenteDireccion]
GO
